package com.js.lottery.domin.strategy.repository;

import com.js.lottery.domin.strategy.model.aggregates.StrategyRich;
import com.js.lottery.domin.strategy.model.vo.AwardBriefVO;

import java.util.List;

/**
 * @author:JiangSong
 * @Date:2023/11/10
 *
 *
 * 提供仓储服务，其实也就是对Mysql、Redis、ES等数据的统一包装。
 **/


public interface IStrategyRepository {
    /**
     * 根据入参得到抽奖策略，将策略与具体策略聚合在一起
     * @param strategyId
     * @return
     */
    StrategyRich queryStrategyRich(Long strategyId);

    /**
     * 查询奖品信息
     * @param awardId
     * @return
     */
    //Award queryAwardInfo(String awardId);
    AwardBriefVO queryAwardInfo(String awardId);

    /**
     * 获取那些被排除掉的抽奖列表，这些奖品可能是已经奖品库存为空，或者因为风控策略不能给这个用户薅羊毛的奖品
     * @param strategyId
     * @return
     */
    List<String> queryNoStockStrategyAwardList(Long strategyId);

    /**
     * 扣减库存
     * @param strategyId 策略ID
     * @param awardId    奖品ID
     * @return           扣减结果
     */
    boolean deductStock(Long strategyId, String awardId);
}
